package com.sky.config;

import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @Description RedisConfiguration
 * @Author zhengyuan&junjun
 * @Date 2024-10-11
 */

//RedisTemplate配置类:用于创建RedisTemplate对象
@Configuration  //定义配置类
@Slf4j   //日志
public class RedisConfiguration {
   /**
    RedisTemplate，对相关api进行了归类封装,将同一类型操作封装为operation接口
    - ValueOperations：string数据操作
    - SetOperations：set类型数据操作
    - ZSetOperations：zset类型数据操作
    - HashOperations：hash类型的数据操作
    - ListOperations：list类型的数据


    * **/
   @Bean //@Bean 注解用于在带有 @Configuration 注解的类中声明一个Spring管理的Bean
    public RedisTemplate redisTemplate (RedisConnectionFactory redisConnectionFactory){

       log.info("开始创建redis模板对象");  //打印日志到控制台
       //1.创建RedisTemplate模板对象
       RedisTemplate redisTemplate = new RedisTemplate();
       //2.设置redis key、value的序列化器
       redisTemplate.setKeySerializer(new StringRedisSerializer());
        //3.value值中支持中文显示
       redisTemplate.setValueSerializer(new FastJsonRedisSerializer<Object>(Object.class));
        //4.设置redis的连接工厂对象
       redisTemplate.setConnectionFactory(redisConnectionFactory);

       return  redisTemplate;

    }





}
